Intrinsic to the operation of modern computers is the fundamental or core software known as the "operating system" (OS). The OS is responsible for providing an environment, in conjunction with the physical hardware attached to the computer system, in which programs may run. One major attribute of an OS is the degree to which it can isolate the programs (often called "applications") that are expected to execute on the computer system from the actual operational details of the hardware attached to the computer system.
For example, it would be undesirable for an application to have to know the details of a display (video terminal or paper-based Teletype) attached to the computer. If a new type of display were developed, applications that predated this new hardware would be unable to utilize it since they were not constructed with the parameters of the new device. This would provide a disincentive for hardware innovation as well as a disincentive for taking advantage of very specific features of a particular device. This "working to a lowest common denominator" is a further hindrance to the marketability and saleability of computer systems.
All OS's today implement a large degree of such isolation, allowing applications to be written and executed on a large variety of hardware configurations. This isolation has been achieved by the organization of the operating system into a kernel, filing systems, and device drivers. The kernel contains common services that applications can access. These services convert requests by applications into requests for data transfer from device drivers. Such requests come at the level of read data from a keyboard, write data to a display or printer, read data from a particular location within a mass storage medium or write data to a particular location within a mass storage medium. From the standpoint of displays, keyboards, and printers, such isolation occurs very naturally. Mass storage presents a significant problem in that providing a means for locating or naming data in a fashion that is sufficiently isolated from the device requires a significant body of code. This code that provides a naming/location service for applications to use and converts requests from applications into read-at-location/write-at-location commands to device drivers are called "filing systems" (also known as "file systems" or "FS's"). Such code is often quite significant; the popular MS-DOS operating system is almost 60% devoted to a particular FS implementation, for example.
In prior art systems, the FS is an integral component of the OS as well as a fixed portion of the hardware initialization and OS start-up process (often called "bootstrap" process or "booting" process). There is some code that is stored in a section of non-volatile memory (sometimes called read-only-memory or ROM) that, as part of the hardware initialization, will issue a command to a specific hardware device to read a specific, but limited in volume and location, set of code from the device into the system's memory. The ROM code will then transfer control to this newly read code and begin execution. This code will issue further commands to the device to read other portions (significantly less limited in quantity and location) of the device into memory. This code comprises the OS as well as the device drivers associated with the OS. Once this code is completely present in the memory of a prior art system, the bootstrap code transfers control to the OS for the remainder of initialization. Since this OS contains an FS, it uses this FS and device drivers to complete its initialization process.
While there may be more than one FS integrated with the prior art OS (linked or bound to the OS code), the relationship between the FS's and OS is fixed at the time the OS is created. Indeed, the OS and FS are combined into a practically indivisible unit during the OS construction. There is a specific association made between a particular FS, a particular device driver (which provides access to the physical device) and the actual medium that is present in the device (called the "volume"). Some physical devices may contain only one volume for their entire lifetime, such as fixed (or hard) disks. Others may contain media that is freely changeable by the operator, such as floppy (or flexible) disks or CDROM disks. This association is fixed at the time the OS is created.
There are some significant and unfortunate implications to prior art systems of the type described above. First, since FS's are indivisibly bound to the OS, it is difficult to upgrade a FS in the field to remedy defects without wholesale replacement of the OS. Second, the construction and binding of the FS to the OS require significant knowledge of the structure and services of the OS. This presents a significant barrier to the innovation of faster and more powerful data storage organizations, since the internal structure and services of OS's are often considered proprietary by their authors and innovation by parties other than the OS authors is thus restricted. This means that the number of FS's available on a particular OS may necessarily be limited. Third, with innovation providing new physical devices with increased capacity and functionality, the inability to add filing systems independent of the OS authors reduces the potential market for new devices. Fourth, since such hardware is not directly accessible through common OS kernel services, software must be provided that is peculiar to the hardware and is not, in general, amenable to access by preexisting applications. Finally, since there exist devices that support removable media, the interchange of such information requires coordination between OS authors in that they must construct FS's that understand the same data organization.